<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 函数(方法) => 把完成特定功能的代码抽离出来,放到函数中,起一个名字(函数名)   => 可以通过函数名调用函数
    // 目的实现:代码的复用

    // function fn(a,b){
    //     return a + b;
    // }
    // fn(10,20);

    // 函数的创建方式
    // 1. 命名函数 (声明式)
    // 2. 匿名函数 (a. 赋值式/函数表达式 b.匿名函数自调用)
    // 3. 构造函数创建   new Function()  => 函数也是一个特殊的实例化对象

    // 回调函数 => 函数作为参数,传入到另一个函数中(被该函数的形参接收), 让它在另一个函数中执行 -> 计时器/延时器  数组的遍历方法 forEach
    
    // 闭包 =>  有权访问另一个函数作用域中变量的函数 (函数在执行的过程中返回了另一个函数/多个函数, 返回的函数中使用了父作用域的变量/方法)

    function fn(){
        var a = 10;
        return function(){
            a++;
            console.log(a);
        }
    }
    
    // fn();  => function(){}
    var newFn = fn();
    console.log(newFn);

    newFn();
    newFn();



    
    





</script>
</html>